//
//  RecentChatManager.h
//  DogeLegs
//
//  Created by 宋华 on 2017/8/24.
//  Copyright © 2017年 宋华. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "RecentChat.h"

@interface RecentChatManager : NSObject

+ (RecentChatManager*)sharedInstance;


#pragma mark - -------最近聊天表操作相关--------

/**
 @brief 批量插入或新增聊天记录（用于接收到新消息或发送消息）
 @param recentData 要插入或修改的RecentConcactData对象
 @return 数据库操作是否成功
 */
- (BOOL)insertOrUpdateRecentWithData:(RecentChat *)recentData;


/**
 @brief 插入数据
 @param recentData 要插入或修改的RecentConcactData对象
 @return 数据库操作是否成功
 */
- (BOOL)insertRecentData:(RecentChat *)recentData;

/**
 @brief 更新数据
 @param recentData 要插入或修改的RecentConcactData对象
 @return 数据库操作是否成功
 */
- (BOOL)updateRecentData:(RecentChat *)recentData;

/**
 @brief  判断对应消息在最近消息列表中是否存在
 @param  friendid  导购ID
 @return 是否存在记录
 */
- (BOOL)isExistRecentDataWithFriendid:(NSString *)friendid;

/**
 @brief  队列中判断对应消息在最近消息列表中是否存在
 @param  storeId  导购ID
 @return 是否存在记录
 */
- (BOOL)isExistRecentDataWithStoreIdAtQueue:(NSString *)storeId;


/**
 @brief 更新近期聊天人员的基本信息
 @param information 更新内容
 @param uType 更新类型
 @return 数据库操作是否成功
 */
- (BOOL)updateRecentChatTableWithInfo:(id)information updateType:(kRecentChatInfoStyle)uType friendid:(NSString *)friendid;

/**
 @brief 队列中更新近期聊天人员的基本信息
 @param information 更新内容
 @param uType 更新类型
 @return 数据库操作是否成功
 */
- (BOOL)updateRecentChatTableWithInfoAtQueue:(id)information updateType:(kRecentChatInfoStyle)uType friendid:(NSString *)Friendid;


/**
 @brief  根据客户ID查询最近聊天消息
 @param  friendid  导购ID
 @return 指定最近聊天人员最新的聊天信息
 */
- (RecentChat *)selectRecentDataWithFriendid:(NSString *)friendid;


/**
 @brief  查询并删除某个客户的最近聊天记录
 @param  friendid  导购ID
 */
- (void)selectAndDeleteRecentDataWithFriendid:(NSString *)friendid;

/**
 @brief  删除某个客户的最近聊天记录
 @return 是否删除成功
 */
- (BOOL)deleteRecentContactTableWithFriendid:(NSString *)friendid
;

/**
 @brief  创建关注消息
 */
- (void)createAttentionMessage:(RecentChat *)rChat;

/**
 @brief  获取所有的最近聊天数据
 @return 聊天数据
 */
- (NSMutableArray *)selectAllRecentData;

/**
 @brief  获取最近聊天表未读的消息数目
 @return 未读消息数
 */
- (int)selectTotalUnreadChatMsgCount;


/**
 @brief  查询客户总的消息条数
 @return 消息条数
 */
- (int)selectTotalChatMsgCountByFriendid:(NSString *)friendid;

/**
 @brief  获取某个客户未读消息数
 @param  friendid  好友id
 @return 消息数
 */
- (int)selecteUnreadChatMsgCountWithFriendid:(NSString *)friendid;

/**
 @brief  根据客户ID重置未读的消息数目
 @param  friendid  好友id
 @return 修改是否成功
 */
- (BOOL)resetUnreadChatMsgCountWithFriendid:(NSString *)friendid;

/**
 @brief  通过客户ID更新会话未读消息数
 @param  friendid  好友id
 @param  count 未读消息数
 @return 更新是否成功
 */
- (BOOL)updateUnreadChatMsgCountWithFriendid:(NSString *)friendid count:(NSInteger)count;
/**
 @brief  队列中通过客户ID更新会话未读消息数
 @param  storeId  导购ID
 @param  count 未读消息数
 @return 更新是否成功
 */
- (BOOL)updateUnreadChatMsgCountWithFriendidAtQueue:(NSString *)storeId count:(NSInteger)count;

@end
